#pragma once
#include "micro.hxx"
#include <string>

using namespace std;

class User
{
public:
	////////////////////////////////////////////////////
	// typedefs
	typedef enum{
		PUBLIC,	// Normal user, who can only operate on one task at same time.
		OVER_PUBLIC, // Basically public, but can operate on multiple tasks, one main task and multiple accessory(duizi?).
		SUPERVISOR,	// has the privilege to edit(add/mofity/delete) task, normally one agencyl
		ADMIN	// has the most privilege, myself.
	}UserPrivilege;

	///////////////////////////////////////////////////////
	// constructor
	User(int id, const string& name, const string& pwd, UserPrivilege privilege, int supervisor);
	PROPERTY(Id, int);
	PROPERTY(Name, string);
	PROPERTY(Pwd, string);
	PROPERTY(Privilege, UserPrivilege);
	PROPERTY(Supervisor, int);
};